package com.j283_5.wisdom_park.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.j283_5.wisdom_park.pojo.ContractTable;
import com.j283_5.wisdom_park.vo.contract_management.CollectionRecordVo;
import com.j283_5.wisdom_park.vo.contract_management.ContractAddVo;
import com.j283_5.wisdom_park.vo.contract_management.ContractTableVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
 * 合同表 Mapper 接口
 * </p>
 *
 * @author laoda
 * @since 2022-04-28
 */
@Mapper
public interface ContractTableMapper extends BaseMapper<ContractTable> {

    /**
     * 多条件查询合同信息
     * @param contractTableVo
     * @param start
     * @param limit
     * @return
     */
    List<ContractTableVo> findContractTable(
            @Param("contractTableVo")ContractTableVo contractTableVo,
            @Param("start")
                    Integer start,
            @Param("limit")
                    Integer limit
    );

    /**
     * 查条数
     * @param contractTableVo
     * @return
     */
    Long findContractTableCount(
            @Param("contractTableVo")ContractTableVo contractTableVo
    );

    /**
     * 根据id查询合同信息
     * @param contract_id
     * @return
     */
    List<ContractTableVo> findContractTableById(@Param("contract_id") Integer contract_id);

    /**
     * 根据合同id查询房间信息
     * @param contract_id
     * @return
     */
    List<ContractTableVo> findRoomById(@Param("contract_id") Integer contract_id);

    /**
     * 根据合同id查询收款信息
     * @param contract_id
     * @return
     */
    List<CollectionRecordVo> findCollectionById(@Param("contract_id") Integer contract_id);

    /**
     * 根据合同id删除合同
     * @param contract_id
     * @return
     */
    int deleteContractTable(@Param("contract_id") Integer contract_id);

    /**
     * 插入合同
     * @param contractTableVo
     * @return
     */
    int insertContract(
            @Param("contractTableVo") ContractTableVo contractTableVo,
             @Param("contractAddVo") ContractAddVo contractAddVo
            );

    /**
     * 插入租凭房间信息
     * @param contractTableVo
     * @return
     */
    int insertRoom(
            @Param("contractTableVo") ContractTableVo contractTableVo,
            @Param("contractAddVo") ContractAddVo contractAddVo
    );

    /**
     * 查找合同插入时的id
     * @param contractTableVo
     * @return
     */
    int findContractAddPer_IdVo(
            @Param("contractTableVo") ContractTableVo contractTableVo

    );

    /**
     * 查找房间插入时的id
     * @param contractTableVo
     * @return
     */
    int findContractAddRoom_idVo(
            @Param("contractTableVo") ContractTableVo contractTableVo
    );

    /**
     * 查找楼宇插入时的id
     * @param contractTableVo
     * @return
     */
    int findContractAddTen_IdVo(
            @Param("contractTableVo") ContractTableVo contractTableVo
    );

    /**
     * 插入收帐信息
     * @return
     */
    int insertCollection_record(
            @Param("collectionRecordVo")CollectionRecordVo collectionRecordVo,
            @Param("contractAddVo") ContractAddVo contractAddVo
    );

    int DoContractTable(
      @Param("contractId")Integer contractId
    );
}
